package biblioGraphiqueV2;
import java.awt.Color;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Vector;

import javax.swing.DefaultListModel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JList;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;


public class VueEmpruntExemplaire extends Vue {
	private JTextField textFieldQuota;
	private JTextField textFieldIsbn;
	private JTextField textFieldNumExemplaire;
	
	private JButton btnRechercher;
	private JButton btnAnnuler;
	private JButton btnAnnuler_1;
	private JButton btnEmprunter;
	private JScrollPane scrollPane;
	private DefaultListModel model;
	private JList list;



	public VueEmpruntExemplaire(Controleur controleur) {
		super(controleur);
		setTitle("Emprunt d'un exemplaire");
		setBounds(100, 100, 400, 350);
		getContentPane().setLayout(null);
		
		JLabel lblNumLecteur = new JLabel("Numéro du lecteur");
		lblNumLecteur.setBounds(96, 12, 115, 15);
		getContentPane().add(lblNumLecteur);
		
		btnRechercher = new JButton("Rechercher");
		btnRechercher.setBounds(64, 124, 107, 25);
		getContentPane().add(btnRechercher);
		btnRechercher.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().rechLecteur((String)list.getSelectedValue());
				}
		});
		
		btnAnnuler = new JButton("Annuler");
		btnAnnuler.setBounds(231, 124, 107, 25);
		getContentPane().add(btnAnnuler);
		btnAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueEmpruntExemplaire.this);}
		});
		
		JLabel lblQuota = new JLabel("Quota restant");
		lblQuota.setBounds(122, 175, 89, 15);
		getContentPane().add(lblQuota);
		
		textFieldQuota = new JTextField();
		textFieldQuota.setEditable(false);
		textFieldQuota.setBounds(231, 173, 114, 19);
		getContentPane().add(textFieldQuota);
		textFieldQuota.setColumns(10);
		
		JLabel lblIsbn = new JLabel("Isbn");
		lblIsbn.setBounds(184, 206, 27, 15);
		getContentPane().add(lblIsbn);
		
		textFieldIsbn = new JTextField();
		textFieldIsbn.setBounds(231, 204, 114, 19);
		getContentPane().add(textFieldIsbn);
		textFieldIsbn.setColumns(10);
		
		JLabel lblNumroDexemplaire = new JLabel("Numéro d'exemplaire");
		lblNumroDexemplaire.setBounds(79, 237, 132, 15);
		getContentPane().add(lblNumroDexemplaire);
		
		textFieldNumExemplaire = new JTextField();
		textFieldNumExemplaire.setBounds(231, 235, 114, 19);
		getContentPane().add(textFieldNumExemplaire);
		textFieldNumExemplaire.setColumns(10);
		
		btnEmprunter = new JButton("Emprunter");
		btnEmprunter.setBounds(64, 277, 107, 25);
		getContentPane().add(btnEmprunter);	
		btnEmprunter.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			getControleur().ajouterEmprunt(textFieldIsbn.getText(), textFieldNumExemplaire.getText(), (String)list.getSelectedValue());
			getControleur().fermerVue(VueEmpruntExemplaire.this);}

		});
		
		btnAnnuler_1 = new JButton("Annuler");
		btnAnnuler_1.setBounds(231, 277, 107, 25);
		getContentPane().add(btnAnnuler_1);
		
		scrollPane = new JScrollPane();
		scrollPane.setBounds(231, 12, 115, 96);
		getContentPane().add(scrollPane);
		
		model = new DefaultListModel();
		alimenteListeLec();
		list = new JList(model);
		list.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, new Color(0, 0, 0), null, null, null));
		list.setSelectionMode(0);
		//getContentPane().add(list);
		scrollPane.setViewportView(list);

		
		JSeparator separator = new JSeparator();
		separator.setBounds(53, 161, 292, 2);
		getContentPane().add(separator);
		btnAnnuler_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueEmpruntExemplaire.this);}
		});
	}
	
	public void alimenteQuota(int quota){
		textFieldQuota.setText(String.valueOf(quota));
	}
	
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			list.setEnabled(true);
			btnRechercher.setEnabled(true);
			btnAnnuler.setEnabled(true);
			btnAnnuler_1.setEnabled(false);
			btnEmprunter.setEnabled(false);
			textFieldIsbn.setEditable(false);
			textFieldNumExemplaire.setEditable(false);
			break;
			}
		case inter1: {
			list.setEnabled(false);
			btnRechercher.setEnabled(false);
			btnAnnuler.setEnabled(false);
			btnAnnuler_1.setEnabled(true);
			btnEmprunter.setEnabled(true);
			textFieldIsbn.setEditable(true);
			textFieldNumExemplaire.setEditable(true);
			break;
			}
		}
	}
	
	public void alimenteListeLec(){
		HashMap<String, Lecteur> lec;
		lec = getControleur().getLecteurs();
		
		Vector<String> vec = new Vector<String>(); 

		for (String mapKey : lec.keySet()) {
			String num = lec.get(mapKey).getNumLecteur();
			vec.add(num);
		}
		
		for(int i = vec.size()-1 ; i >= 0 ; i--)
		{
			model.addElement(vec.elementAt(i));
		}
	}	
}
